home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Experimental BBS Explossion 3
/
Experimental BBS Explossion III.iso
/
c
/
cp1.zip
/
DFREE2.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-04-30
|
3KB
|
79 lines
===========================================================================
BBS: The Abacus * HST/DS * Potterville MI
Date: 04-28-93 (18:45) Number: 166
From: WAYNE MATSON Refer#: NONE
To: CHRIS DOWNS Recvd: NO
Subj: get disk free space 2/2 Conf: (36) C Language
---------------------------------------------------------------------------
>>> Continued from previous message
strCommas = strLen / 3;
if (!(strLen % 3))
--strCommas;
if (strCommas) {
dynStr = (char *)malloc(strLen + strCommas + 1);
dynPtr = dynStr + strLen + strCommas + 1;
strPtr = str + strLen;
*dynPtr = 0;
for (i = 0, --dynPtr,--strPtr; i < strCommas; i++) {
for (x = 3; x > 0; x--)
*dynPtr-- = *strPtr--;
*dynPtr-- = ',';
}
for (; str != strPtr; *dynPtr-- = *strPtr--);
*dynPtr = *strPtr;
}
strcpy(str, dynPtr);
if (NULL != dynStr)
free(dynStr);
return str;
}
static int GetDiskSpace(int drv, Ulong *ttlDrv, Ulong *ttlFree) {
/******************************************************************************
** Get disk drive total and free space. **
** **
** Syntax: **
** int GetDiskSpace(int drv, unsigned long ttlDrv, unsigned log ttlFree) **
** drv = integer value of drive to check, drives are number from **
** 0 - maxDrive number. with 0 being default drive and 1 = A: **
** 2 - B: and so on. **
** ttlDrv = address of unsigned long where total size of drive will **
** be returned. **
** ttlFree = address of unsigned long where total size of free space **
** will be returned **
** **
** returns 0 upon success and non-zero if invalid drive specified **
******************************************************************************/
Ulong secPerCluster;
Ulong noAvailCluster;
Ulong bytesPerSector;
Ulong clusterPerDrv;
union REGS userRegs;
userRegs.h.ah = GetFreeSpace;
userRegs.h.dl = drv;
int86(DosInt21, &userRegs, &userRegs);
secPerCluster = userRegs.x.ax;
if (0x0000ffff == secPerCluster)
return 1;
noAvailCluster = userRegs.x.bx;
bytesPerSector = userRegs.x.cx;
clusterPerDrv = userRegs.x.dx;
*ttlDrv = secPerCluster * bytesPerSector * clusterPerDrv;
*ttlFree = secPerCluster * bytesPerSector * noAvailCluster;
return 0;
}
snip-------------------------->------------------------------------------------
--- RAMail 3.3
* Origin: ABACUS BBS - Chaparral,NM. (505) 824-0049 HST DS (1:381/85)
SEEN-BY: 1/211 11/2 4 13/13 101/1 108/89 109/25 110/69 114/5 123/19 124/1
SEEN-BY: 153/752 154/40 77 157/2 159/100 125 575 950 203/23 209/209 280/1
SEEN-BY: 390/1 396/1 5 15 2270/1 2440/5 3603/20